home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / tests / matnew.tst < prev    next >
Text File  |  1999-09-16  |  3KB  |  100 lines

  1. eps=200000*%eps;
  2. //      controlability...
  3. a=[rand(3,3),rand(3,2);0*ones(2,3),rand(2,2)];b=[rand(3,2);0*ones(2,2)];
  4. t=rand(5,5);a=inv(t)*a*t;b=inv(t)*b;
  5. [m,t]=contr(a,b);m-3
  6. if m-3<>0 then pause,end
  7. v=t(:,1:3);u=t(:,4:5);x=u'*a*v;
  8. if norm(x)>eps then pause,end
  9. //invariants zeros
  10. a=rand(3,3);b=rand(3,2);c=rand(2,3);d=rand(2,2);
  11. [al,be]=trzeros(syslin('c',a,b,c,d));
  12. u=spec(a-b*inv(d)*c);
  13. x=sum(u)-sum(al./be);
  14. if norm(x)>eps then pause,end
  15. [al,be]=tr_zer(a,b,c,0*d);
  16. u=al./be;
  17. v=spec(a-10000000*b*c);[x,k]=mini(abs(v));
  18. if norm(v(k)-u) > 1.e-7 then pause,end
  19. //       placement poles
  20. // mono input
  21. a=rand(5,5);b=rand(5,1);pls=[1,2,3,%i,-%i];
  22. k=ppol(a,b,pls);
  23. x=poly(pls,'z')-poly(a-b*k,'z');
  24. if norm(coeff(x))>100*eps then pause,end
  25. // multi_input
  26. b=rand(5,2);k=ppol(a,b,pls);
  27. x=poly(pls,'z')-poly(a-b*k,'z');
  28. if norm(coeff(x))>100*eps then pause,end
  29. //
  30. //    rtitr
  31. //==============
  32. //
  33. //siso
  34. //----
  35. //
  36. //causal
  37. //n1 scalar
  38. n1=1;d1=poly([1 1],'s','c');       // yj=y(j-1)+u(j-1)
  39. r1=[0 1 0 1 0 1 0 1 0 1 0];
  40. r=rtitr(n1,d1,ones(1,10));if norm(r1-r)>eps then pause,end
  41. //hot
  42. r=rtitr(n1,d1,ones(1,9),1,0);if norm(r1(2:11)-r)>eps then pause,end
  43. //n1 polynomial
  44. n1=poly(1,'s','c');
  45. r=rtitr(n1,d1,ones(1,10));if norm(r1-r)>eps then pause,end
  46. //hot
  47. r=rtitr(n1,d1,ones(1,9),1,0);if norm(r1(2:11)-r)>eps then pause,end
  48. //
  49. //non causal
  50. n2=poly([1 1 1],'s','c');d2=d1;    // yj=-y(j-1)+u(j-1)+u(j)+u(j+1)
  51. r2=[2 1 2 1 2 1 2 1 2];
  52. r=rtitr(n2,d2,ones(1,10));if norm(r-r2)>eps then pause,end
  53. //hot
  54. r=rtitr(n2,d2,ones(1,9),1,2);if norm(r2(2:9)-r)>eps then pause,end
  55. //
  56. //mimo
  57. //----
  58. //
  59. //causal
  60. d1=d1*diag([1 0.5]);n1=[1 3 1;2 4 1];r1=[5;14]*r1;
  61. r=rtitr(n1,d1,ones(3,10));if norm(r1-r)>eps then pause,end
  62. //
  63. r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
  64. if norm(r1(:,2:11)-r)>eps then pause,end
  65. //n1 polynomial
  66. n1(1,1)=poly(1,'s','c');
  67. r=rtitr(n1,d1,ones(3,10));if norm(r1-r)>eps then pause,end
  68. //
  69. r=rtitr(n1,d1,ones(3,9),[1;1;1],[0;0]);
  70. if norm(r1(:,2:11)-r)>eps then pause,end
  71. //non causal
  72. d2=d1;n2=n2*n1;r2=[5;14]*r2;
  73. r=rtitr(n2,d2,ones(3,10));if norm(r2-r)>eps then pause,end
  74. //
  75. r=rtitr(n2,d2,ones(3,9),[1;1;1],[10;28]);
  76. if norm(r2(:,2:9)-r)>eps then pause,end
  77. //
  78. //
  79. a = [0.21 , 0.63 , 0.56 , 0.23 , 0.31
  80.      0.76 , 0.85 , 0.66 , 0.23 , 0.93
  81.      0 , 0.69 , 0.73 , 0.22 , 0.21
  82.      0.33 , 0.88 , 0.2 , 0.88 , 0.31
  83.      0.67 , 0.07 , 0.54 , 0.65 , 0.36];
  84. b = [0.29 , 0.5 , 0.92
  85.      0.57 , 0.44 , 0.04
  86.      0.48 , 0.27 , 0.48
  87.      0.33 , 0.63 , 0.26
  88.      0.59 , 0.41 , 0.41];
  89. c = [0.28 , 0.78 , 0.11 , 0.15 , 0.84
  90.      0.13 , 0.21 , 0.69 , 0.7 , 0.41];
  91. d = [0.41 , 0.11 , 0.56
  92.      0.88 , 0.2 , 0.59];
  93. s=syslin('d',a,b,c,d);
  94. h=ss2tf(s);num=h(2);den=h(3);den=den(1,1)*eye(2,2);
  95. u=1;u(3,10)=0;
  96. r3=flts(u,s);
  97. r=rtitr(num,den,u);if norm(r3-r)>1000*eps then pause,end
  98. //
  99.  
  100.